﻿// Doc-Encode UTF8-BOM, Space(4), Unix(LF)
#include "himpp_v4.h"

#include "hi_common.h"


//////////////////////////////////////////////////////////////////////////
// 导出函数



//////////////////////////////////////////////////////////////////////////
// 常量定义

static void hicomm_define(lua_State* L)
{
    // MOD_ID_E
    HIMPP_DEFINE_INTEGER(L, HI_ID_CMPI);
    HIMPP_DEFINE_INTEGER(L, HI_ID_VB);
    HIMPP_DEFINE_INTEGER(L, HI_ID_SYS);
    HIMPP_DEFINE_INTEGER(L, HI_ID_RGN);
    HIMPP_DEFINE_INTEGER(L, HI_ID_CHNL);
    HIMPP_DEFINE_INTEGER(L, HI_ID_VDEC);
    HIMPP_DEFINE_INTEGER(L, HI_ID_AVS);
    HIMPP_DEFINE_INTEGER(L, HI_ID_VPSS);
    HIMPP_DEFINE_INTEGER(L, HI_ID_VENC);
    HIMPP_DEFINE_INTEGER(L, HI_ID_SVP);
    HIMPP_DEFINE_INTEGER(L, HI_ID_H264E);
    HIMPP_DEFINE_INTEGER(L, HI_ID_JPEGE);
    HIMPP_DEFINE_INTEGER(L, HI_ID_MPEG4E);
    HIMPP_DEFINE_INTEGER(L, HI_ID_H265E);
    HIMPP_DEFINE_INTEGER(L, HI_ID_JPEGD);
    HIMPP_DEFINE_INTEGER(L, HI_ID_VO);
    HIMPP_DEFINE_INTEGER(L, HI_ID_VI);
    HIMPP_DEFINE_INTEGER(L, HI_ID_DIS);
    HIMPP_DEFINE_INTEGER(L, HI_ID_VALG);
    HIMPP_DEFINE_INTEGER(L, HI_ID_RC);
    HIMPP_DEFINE_INTEGER(L, HI_ID_AIO);
    HIMPP_DEFINE_INTEGER(L, HI_ID_AI);
    HIMPP_DEFINE_INTEGER(L, HI_ID_AO);
    HIMPP_DEFINE_INTEGER(L, HI_ID_AENC);
    HIMPP_DEFINE_INTEGER(L, HI_ID_ADEC);
    HIMPP_DEFINE_INTEGER(L, HI_ID_VPU);
    HIMPP_DEFINE_INTEGER(L, HI_ID_PCIV);
    HIMPP_DEFINE_INTEGER(L, HI_ID_PCIVFMW);
    HIMPP_DEFINE_INTEGER(L, HI_ID_ISP);
    HIMPP_DEFINE_INTEGER(L, HI_ID_IVE);
    HIMPP_DEFINE_INTEGER(L, HI_ID_USER);
    HIMPP_DEFINE_INTEGER(L, HI_ID_DCCM);
    HIMPP_DEFINE_INTEGER(L, HI_ID_DCCS);
    HIMPP_DEFINE_INTEGER(L, HI_ID_PROC);
    HIMPP_DEFINE_INTEGER(L, HI_ID_LOG);
    HIMPP_DEFINE_INTEGER(L, HI_ID_VFMW);
    HIMPP_DEFINE_INTEGER(L, HI_ID_H264D);
    HIMPP_DEFINE_INTEGER(L, HI_ID_GDC);
    HIMPP_DEFINE_INTEGER(L, HI_ID_PHOTO);
    HIMPP_DEFINE_INTEGER(L, HI_ID_FB);
    HIMPP_DEFINE_INTEGER(L, HI_ID_HDMI);
    HIMPP_DEFINE_INTEGER(L, HI_ID_VOIE);
    HIMPP_DEFINE_INTEGER(L, HI_ID_TDE);
    HIMPP_DEFINE_INTEGER(L, HI_ID_HDR);
    HIMPP_DEFINE_INTEGER(L, HI_ID_PRORES);
    HIMPP_DEFINE_INTEGER(L, HI_ID_VGS);
    HIMPP_DEFINE_INTEGER(L, HI_ID_FD);
    HIMPP_DEFINE_INTEGER(L, HI_ID_ODT);
    HIMPP_DEFINE_INTEGER(L, HI_ID_VQA);
    HIMPP_DEFINE_INTEGER(L, HI_ID_LPR);
    HIMPP_DEFINE_INTEGER(L, HI_ID_SVP_NNIE);
    HIMPP_DEFINE_INTEGER(L, HI_ID_SVP_DSP);
    HIMPP_DEFINE_INTEGER(L, HI_ID_DPU_RECT);
    HIMPP_DEFINE_INTEGER(L, HI_ID_DPU_MATCH);
    HIMPP_DEFINE_INTEGER(L, HI_ID_MOTIONSENSOR);
    HIMPP_DEFINE_INTEGER(L, HI_ID_MOTIONFUSION);
    HIMPP_DEFINE_INTEGER(L, HI_ID_GYRODIS);
    HIMPP_DEFINE_INTEGER(L, HI_ID_PM);
    HIMPP_DEFINE_INTEGER(L, HI_ID_SVP_ALG);
    HIMPP_DEFINE_INTEGER(L, HI_ID_IVP);
    HIMPP_DEFINE_INTEGER(L, HI_ID_MCF);
    HIMPP_DEFINE_INTEGER(L, HI_ID_BUTT);


    // PAYLOAD_TYPE_E
    HIMPP_DEFINE_INTEGER(L, PT_PCMU);
    HIMPP_DEFINE_INTEGER(L, PT_1016);
    HIMPP_DEFINE_INTEGER(L, PT_G721);
    HIMPP_DEFINE_INTEGER(L, PT_GSM);
    HIMPP_DEFINE_INTEGER(L, PT_G723);
    HIMPP_DEFINE_INTEGER(L, PT_DVI4_8K);
    HIMPP_DEFINE_INTEGER(L, PT_DVI4_16K);
    HIMPP_DEFINE_INTEGER(L, PT_LPC);
    HIMPP_DEFINE_INTEGER(L, PT_PCMA);
    HIMPP_DEFINE_INTEGER(L, PT_G722);
    HIMPP_DEFINE_INTEGER(L, PT_S16BE_STEREO);
    HIMPP_DEFINE_INTEGER(L, PT_S16BE_MONO);
    HIMPP_DEFINE_INTEGER(L, PT_QCELP);
    HIMPP_DEFINE_INTEGER(L, PT_CN);
    HIMPP_DEFINE_INTEGER(L, PT_MPEGAUDIO);
    HIMPP_DEFINE_INTEGER(L, PT_G728);
    HIMPP_DEFINE_INTEGER(L, PT_DVI4_3);
    HIMPP_DEFINE_INTEGER(L, PT_DVI4_4);
    HIMPP_DEFINE_INTEGER(L, PT_G729);
    HIMPP_DEFINE_INTEGER(L, PT_G711A);
    HIMPP_DEFINE_INTEGER(L, PT_G711U);
    HIMPP_DEFINE_INTEGER(L, PT_G726);
    HIMPP_DEFINE_INTEGER(L, PT_G729A);
    HIMPP_DEFINE_INTEGER(L, PT_LPCM);
    HIMPP_DEFINE_INTEGER(L, PT_CelB);
    HIMPP_DEFINE_INTEGER(L, PT_JPEG);
    HIMPP_DEFINE_INTEGER(L, PT_CUSM);
    HIMPP_DEFINE_INTEGER(L, PT_NV);
    HIMPP_DEFINE_INTEGER(L, PT_PICW);
    HIMPP_DEFINE_INTEGER(L, PT_CPV);
    HIMPP_DEFINE_INTEGER(L, PT_H261);
    HIMPP_DEFINE_INTEGER(L, PT_MPEGVIDEO);
    HIMPP_DEFINE_INTEGER(L, PT_MPEG2TS);
    HIMPP_DEFINE_INTEGER(L, PT_H263);
    HIMPP_DEFINE_INTEGER(L, PT_SPEG);
    HIMPP_DEFINE_INTEGER(L, PT_MPEG2VIDEO);
    HIMPP_DEFINE_INTEGER(L, PT_AAC);
    HIMPP_DEFINE_INTEGER(L, PT_WMA9STD);
    HIMPP_DEFINE_INTEGER(L, PT_HEAAC);
    HIMPP_DEFINE_INTEGER(L, PT_PCM_VOICE);
    HIMPP_DEFINE_INTEGER(L, PT_PCM_AUDIO);
    HIMPP_DEFINE_INTEGER(L, PT_MP3);
    HIMPP_DEFINE_INTEGER(L, PT_ADPCMA);
    HIMPP_DEFINE_INTEGER(L, PT_AEC);
    HIMPP_DEFINE_INTEGER(L, PT_X_LD);
    HIMPP_DEFINE_INTEGER(L, PT_H264);
    HIMPP_DEFINE_INTEGER(L, PT_D_GSM_HR);
    HIMPP_DEFINE_INTEGER(L, PT_D_GSM_EFR);
    HIMPP_DEFINE_INTEGER(L, PT_D_L8);
    HIMPP_DEFINE_INTEGER(L, PT_D_RED);
    HIMPP_DEFINE_INTEGER(L, PT_D_VDVI);
    HIMPP_DEFINE_INTEGER(L, PT_D_BT656);
    HIMPP_DEFINE_INTEGER(L, PT_D_H263_1998);
    HIMPP_DEFINE_INTEGER(L, PT_D_MP1S);
    HIMPP_DEFINE_INTEGER(L, PT_D_MP2P);
    HIMPP_DEFINE_INTEGER(L, PT_D_BMPEG);
    HIMPP_DEFINE_INTEGER(L, PT_MP4VIDEO);
    HIMPP_DEFINE_INTEGER(L, PT_MP4AUDIO);
    HIMPP_DEFINE_INTEGER(L, PT_VC1);
    HIMPP_DEFINE_INTEGER(L, PT_JVC_ASF);
    HIMPP_DEFINE_INTEGER(L, PT_D_AVI);
    HIMPP_DEFINE_INTEGER(L, PT_DIVX3);
    HIMPP_DEFINE_INTEGER(L, PT_AVS);
    HIMPP_DEFINE_INTEGER(L, PT_REAL8);
    HIMPP_DEFINE_INTEGER(L, PT_REAL9);
    HIMPP_DEFINE_INTEGER(L, PT_VP6);
    HIMPP_DEFINE_INTEGER(L, PT_VP6F);
    HIMPP_DEFINE_INTEGER(L, PT_VP6A);
    HIMPP_DEFINE_INTEGER(L, PT_SORENSON);
    HIMPP_DEFINE_INTEGER(L, PT_H265);
    HIMPP_DEFINE_INTEGER(L, PT_VP8);
    HIMPP_DEFINE_INTEGER(L, PT_MVC);
    HIMPP_DEFINE_INTEGER(L, PT_PNG);
    HIMPP_DEFINE_INTEGER(L, PT_AMR);
    HIMPP_DEFINE_INTEGER(L, PT_MJPEG);
    HIMPP_DEFINE_INTEGER(L, PT_AMRWB);
    HIMPP_DEFINE_INTEGER(L, PT_PRORES);
    HIMPP_DEFINE_INTEGER(L, PT_OPUS);
    HIMPP_DEFINE_INTEGER(L, PT_BUTT);


}

//////////////////////////////////////////////////////////////////////////
// 库

KLB_API int luaopen_himpp_hicomm(lua_State* L)
{
    static luaL_Reg lib[] =
    {
        { NULL,                 NULL }
    };

    // 创建导出库函数
    luaL_newlib(L, lib);

    // 常量
    hicomm_define(L);

    return 1;
}
